package mr

import (
	"os"
	"strconv"
)

type Task struct {
	TaskType  TaskType // Task 任务类型 Map/Reduce
	TaskId    int      // Task 的 id
	ReduceNum int      // 传入的 Reduce 的数量，用于之后的 分区操作
	FileSlice []string // 输入的文件切片，文件名 Map 只有一个即 len(FileSlice) = 1 ，Reduce则是看 ReduceNum
}
type TaskArgs struct{}
type TaskType int

const (
	MapTask TaskType = iota
	ReduceTask
	WaitingTask // 此时任务分发完成了，但是任务还没完成，阶段未改变
	ExitTask    // 退出阶段
)

type Phase int

const (
	MapPhase    Phase = iota // 分发 MapTask 阶段
	ReducePhase              // 此阶段分发 ReduceTask 阶段
	AllDone                  // Mapreduce 程序完成阶段
)

type State int

const (
	Working State = iota // Task 运行中阶段
	Waiting              // Task 等待执行
	Done                 // Task 完成
)

func masterSock() string {
	s := "/var/tmp/6824-mr-"
	s += strconv.Itoa(os.Getuid())
	return s
}
